package com.lino.design.mediator;

import java.util.List;

/**
 * @description: 定义sqlsession接口
 * @author: lingjian
 * @createDate: 2023/1/31 16:55
 */
public interface SqlSession {

    /**
     * 查询单条记录
     *
     * @param statement SQL语句
     * @param <T>       泛型
     * @return 泛型结果对象
     */
    <T> T selectOne(String statement);

    /**
     * 查询单条记录
     *
     * @param statement SQL语句
     * @param parameter 查询参数
     * @param <T>       泛型
     * @return 泛型结果对象
     */
    <T> T selectOne(String statement, Object parameter);

    /**
     * 查询多条记录
     *
     * @param statement SQL语句
     * @param <T>       泛型
     * @return 泛型集合对象
     */
    <T> List<T> selectList(String statement);

    /**
     * 查询多条记录
     *
     * @param statement SQL语句
     * @param parameter 查询参数
     * @param <T>       泛型
     * @return 泛型集合对象
     */
    <T> List<T> selectList(String statement, Object parameter);

    /**
     * 关闭连接
     */
    void close();
}
